package com.eastfair.security.apiconditioncore;

import java.util.*;

/**
 * request规则数据
 * ligang
 * 2020/03/27
 */
public class ConditionData {
    //api版本控制数据
    private static Map<String,Set<Integer>> apiVersion = new HashMap<>();

    public static  Map<String,Set<Integer>> getApiVersion() {
        return apiVersion;
    }

    public static void setApiVersion(String methodPath,Integer apiVersion) {
        Set<Integer> set = getApiVersion().get(methodPath);
        if(set==null){
            set = new HashSet<>();
        }
        set.add(apiVersion);
        //排序
        Set<Integer> sortSet = new TreeSet<Integer>((o1, o2) -> o2.compareTo(o1));
        sortSet.addAll(set);
        getApiVersion().put(methodPath,set);
    }
    /**
     * 获取实际版本值,如没有对应版本则取本次方法最新版本
     * @param methodPath
     * @return
     */
    public static Integer findRealVersionByMethod(String methodPath,int versionNum){
        Set<Integer> set = getApiVersion().get(methodPath);
        for(Integer i : set){
            if(i.intValue() == versionNum){
                return i;
            }
        }
        //如果版本太高，取最近的一次版本
        Integer max = Collections.max(set);
        if(versionNum>max.intValue()){
            return max;
        }
        return 0;
    }
}
